package org.db.ui;

import java.util.Enumeration;
import java.util.List;

import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

import org.db.Manager;
import org.db.dao.GleisDAO;

public class GleisDefinitionTable extends JTable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7488730076005564962L;

	public GleisDefinitionTable() {
		setModel(new GleisDefinitionTableModel());
		centreColumnData();
		((GleisDefinitionTableModel) getModel()).addGleisElemente(Manager
				.getInstance().getGleisElemente());

	}

	/**
	 * Zentrale Ausrichtung der Werte in allen Zellen
	 */
	private void centreColumnData() {
		Enumeration<TableColumn> columns = getColumnModel().getColumns();
		DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
		renderer.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
		while (columns.hasMoreElements()) {
			columns.nextElement().setCellRenderer(renderer);
		}
	}

	public void addGleisElement(GleisDAO dao) {
		((GleisDefinitionTableModel) getModel()).addGleisElement(dao);
	}

	public void addGleisElemente(List<GleisDAO> daos) {
		((GleisDefinitionTableModel) getModel()).addGleisElemente(daos);
	}

	public boolean isEmpty() {
		return ((GleisDefinitionTableModel) getModel()).isEmpty();
	}

	public List<GleisDAO> getGleisElemente() {
		return ((GleisDefinitionTableModel) getModel()).getGleisElemente();
	}

	public void removeGleisElement(GleisDAO dao) {
		((GleisDefinitionTableModel) getModel()).removeGleisElement(dao);
	}

	public GleisDAO removeGleisElement(int rowIndex) {
		return ((GleisDefinitionTableModel) getModel())
				.removeGleisElement(rowIndex);
	}

	public GleisDAO getElementAtRow(int row) {
		return ((GleisDefinitionTableModel) getModel()).getElementAtRow(row);
	}

	public void refresh() {
		((GleisDefinitionTableModel) getModel()).refresh();
	}

}
